
package radio_station7.model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

// H συγκεκριμένη οντότητα φτιάχτηκε για να ενώνει Artist με Album στον τύπο Album ArtistAlbum
@Entity
@DiscriminatorValue("Artist") // H τιμή στην οποία θα διαφοροποιείται το ArtistAlbum από την γονική Album
public class ArtistAlbum extends Album implements Serializable {
    private static final long serialVersionUID = 1L;
    @JoinColumn(name = "ARTIST_ID", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Artist artistId;

    public ArtistAlbum() {
    }

    public ArtistAlbum(Long id) {
        this.id = id;
    }
    // Τα πεδία της ArtistAlbum
    public ArtistAlbum(Long id, String title, Date releaseDate, String format, int diskNumber) {
        this.id = id;
        this.title = title;
        this.releaseDate = releaseDate;
        this.format = format;
        this.diskNumber = diskNumber;
    }
    // Ακολουθούν getter και setter για το Id του Artist που είναι Foreign key στην ArtistAlbum
    public Artist getArtistId() {
        return artistId;
    }
    
    public void setArtistId(Artist artistId) {
        Artist oldArtistId = this.artistId;
        this.artistId = artistId;
        changeSupport.firePropertyChange("artistId", oldArtistId, artistId);
    }

}
